<template>
    <div class="btn-body">
        <div v-show="type==='detail'">{{msg}}</div>
        <div class="btn1">
            <div class="btn" @click="toPay" v-if="good.order_status =='0'">
                去付款
            </div>
            <div class="btn2" @click="cancel" v-if="good.order_status =='0'">
                取消订单
            </div>
            <div class="btn" @click="sure" v-if="good.order_status =='2'">
                确认收货
            </div>
        </div>
        <confirm ref="confirm1" text="确定取消订单吗?" confirmText="确定" @confirm="confirmCancel"/>
        <confirm ref="confirm2" text="确定收货吗?" confirmText="确定" @confirm="confirmReceive"/>
    </div>
</template>

<script>
    import API from '../../request/api';
    import confirm from "../../components/common/confirm";
    import {Toast} from 'vant';

    export default {
        name: 'groupOrderBtn',
        data() {
            return {
                oid: ''
            };
        },
        components: {confirm},
        props: {
            good: {
                type: Object,
                required: true,
            },
            type: {
                type: String,
                required: true
            },
            msg: {
                type: String,
                default: '购买的商品'
            },
            active: {
                type: Number,
                required: true,
            }

        },
        computed: {},
        watch: {
            // 监听具体数据变化，并做相应的处理
        },
        methods: {
            toPay() {
                // 拼团验证
                this.request.get(API.groupPartVerify, {
                    gid: this.good.products[0].gid,
                    groupid: this.active ? '1' : this.good.groupid,
                    num: this.good.products[0].num
                }).then((res) => {
                    console.log('groupPartVerify', res);
                    if(!res.status){
                        this.$toast({
                            message: res.msg
                        });
                        return;
                    }
                    //childOrder-->子订单去付款
                    let data = {
                        getWayData: {
                            target_id: this.oid,
                            target_type: 'childOrder'
                        },
                        total: this.money,
                        type: 4
                    };
                    this.$store.commit('dataCreatePay', data);
                    this.$router.push('pay-choose');
                }).catch((err) => {
                    console.error('groupPartVerify', err);
                });
            },

            cancel() {
                this.$refs.confirm1.show();
            },
            confirmCancel() {
                this.request.post(API.orderCancel, {
                    oid:  this.oid
                }).then(res => {
                    if(res){
                        Toast('取消成功！');
                        location.reload()
                    }
                }, () => {
                });
            },
            logistics() {
                //    物流详情
                this.$router.push({
                    name: 'logistics',
                    query: {
                        ID: this.oid
                    }
                });

            },
            sure() {
                this.$refs.confirm2.show();
            },
            confirmReceive() {
                this.request.post(API.orderConfirm, {oid: this.oid}).then(res => {
                    Toast('已确认收货！');
                    location.reload();
                }, () => {
                });
            },
            couponCode() {
                this.$router.push({
                    name: 'couponCode',
                    query: {
                        ID: this.oid
                    }
                });
            }
        },
        beforeCreate() {
            // 可以在这加个loading事件，在加载实例时触发
            // 这个阶段实例的data、methods是读不到的
        },
        created() {
            setTimeout(()=>{
                if(this.good.id) {
                    this.oid = this.good.id
                } else{
                    this.oid = this.good.oid.order_id
                }
            }, 500)

        },
        beforeMount() {
            // 相关的 render 函数首次被调用。
        },
        mounted() {
            // 挂载元素，获取到DOM节点
            // el选项的DOM节点 被新创建的 vm的el 替换，并挂载到实例上去之后调用此生命周期函数。此时实例的数据在DOM节点上进行渲染
        },
        beforeUpdate() {
            // 数据更新时调用，但不进行DOM重新渲染，在数据更新时DOM没渲染前可以在这个生命函数里进行状态处理
        },
        updated() {
            //  如果对数据统一处理，在这里写上相应函数
            // 这个状态下数据更新并且DOM重新渲染，当这个生命周期函数被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。当实例每次进行数据更新时updated都会执行
        },
        beforeDestroy() {
            // 可以做一个确认停止事件的确认框
        },
        destroyed() {
            // Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁
        }
    };

</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
    @import '~assets/main.styl'
    .btn-body {
        display flex
        justify-content space-between
        height vw(45)
        align-items center
        padding 0 cellPadding
        .btn1 {
            display flex
            justify-content flex-end
            flex 1
            .btn2 {
                btn-gray()
            }
            .btn {
                btn-main()
            }
            div {
                margin-left middleMargin
            }

        }
    }
</style>
